<?php
/**
 * @author xx
 */

namespace util\plugin;

//图片识别，将图片的验证码识别出来，保存到txt文件中
/**
 * ClasspictureIdentify
 * @$path 图片路径
 */
class ImageIdentify{
    //通过upload文件名(不带后缀),识别验证码
    public function identifyCodeByPath($fileName){
        $textPath="/upload/tmp/{$fileName}";
        $imgPath="/upload/tmp/{$fileName}.jpg";
        //使用tesseract命令识别图片，将结果保存到指定路径
        //$cmd = exec("tesseract {$imgPath} {$textPath} -l chi_sim",$out,$status);
        $cmd = shell_exec(`tesseract {$imgPath} {$textPath} -l eng`);
        $textPath="{$textPath}.txt";//加了txt后缀
        //读取识别结果
        $identifyText=file($textPath);
        //if(file_exists($textPath)&&$identifyText=file($textPath)){
        @unlink($imgPath);//删除识别结果文件
        @unlink($textPath);//删除识别结果文件
        //}
        return $identifyText['0']?trim($identifyText['0']):'';
    }

    //通过图片字符串(非base64),文件名(不带后缀),识别验证码
    public function identifyCodeByPicStr($picStr,$fileName){
        if(!$picStr){
            return '';
        }
        $isOk=file_put_contents("/upload/tmp/{$fileName}.jpg",$picStr);
        return $isOk?$this->identifyCodeByPath($fileName):'';
    }

    //通过图片url,文件名(不带后缀),识别验证码
    public function identifyCodeByUrl($picUrl,$fileName){
        $isOk=file_put_contents("/upload/tmp/{$fileName}.jpg",file_get_contents($picUrl));
        return $isOk?$this->identifyCodeByPath($fileName):'';
    }
}